#include "includes\\StateDefinitions.fx"
#include "BikeShader.fx"
#include "WallShader.fx"
#include "SkyShader.fx"
#include "PlatformShader.fx"
#include "CubeShader.fx"




technique11 Bike
{
	pass oneandonly
	{
		SetVertexShader(CompileShader(vs_4_0, BikeVS()));
		SetGeometryShader(0);
		SetPixelShader(CompileShader(ps_4_0, BikePS()));
	}
}

technique11 BikeNoTex
{
	pass oneandonly
	{
		SetVertexShader(CompileShader(vs_4_0, BikeVS()));
		SetGeometryShader(0);
		SetPixelShader(CompileShader(ps_4_0, BikePS_NoTex()));
	}
}


technique11 Sky
{
	pass oneandonly
	{
		SetVertexShader(CompileShader(vs_4_0, SkyVS()));
		SetGeometryShader(0);
		SetPixelShader(CompileShader(ps_4_0, SkyPS()));
		SetRasterizerState(DisableCulling);
		SetBlendState(SrcAlphaBlendingAdd, float4(0.0f, 0.0f, 0.0f, 0.0f), 0xFFFFFFFF);
	}
}


technique11 Wall
{
	pass oneandonly
	{
		SetVertexShader(CompileShader(vs_4_0, WallVS()));
		SetGeometryShader(0);
		SetPixelShader(CompileShader(ps_4_0, WallPS()));
		SetRasterizerState(DisableCulling);
		SetBlendState(SrcAlphaBlendingAdd, float4(0.0f, 0.0f, 0.0f, 0.0f), 0xFFFFFFFF);
	}
}


technique11 WallNoAlpha
{
	pass oneandonly
	{
		SetVertexShader(CompileShader(vs_4_0, WallVS()));
		SetGeometryShader(0);
		SetPixelShader(CompileShader(ps_4_0, WallPS_NoAlpha()));
		SetRasterizerState(DisableCulling);
	}
}


technique11 Platform
{
	pass oneandonly
	{
		SetVertexShader(CompileShader(vs_4_0, PlatformVS()));
		SetGeometryShader(0);
		SetPixelShader(CompileShader(ps_4_0, PlatformPS()));
	}
}


technique11 PlatformNoReflection
{
	pass oneandonly
	{
		SetVertexShader(CompileShader(vs_4_0, PlatformVS()));
		SetGeometryShader(0);
		SetPixelShader(CompileShader(ps_4_0, PlatformPS_NoReflection()));
	}
}


technique11 PlatformNoReflectionMipMap
{
	pass oneandonly
	{
		SetVertexShader(CompileShader(vs_4_0, PlatformVS()));
		SetGeometryShader(0);
		SetPixelShader(CompileShader(ps_4_0, PlatformPS_NoReflectionMipMap()));
	}
}


technique11 PlatformNoReflectionMipMapSS
{
	pass oneandonly
	{
		SetVertexShader(CompileShader(vs_4_0, PlatformVS()));
		SetGeometryShader(0);
		SetPixelShader(CompileShader(ps_4_0, PlatformPS_NoReflectionMipMapSS()));
	}
}


technique11 PlatformNoReflectionNoTex
{
	pass oneandonly
	{
		SetVertexShader(CompileShader(vs_4_0, PlatformVS()));
		SetGeometryShader(0);
		SetPixelShader(CompileShader(ps_4_0, PlatformPS_NoReflectionNoTex()));
	}
}


technique11 Cube
{
	pass oneandonly
	{
		SetVertexShader(CompileShader(vs_4_0, CubeVS()));
		SetGeometryShader(0);
		SetPixelShader(CompileShader(ps_4_0, CubePS()));
		SetRasterizerState(DisableCulling);
		SetBlendState(SrcAlphaBlendingAdd, float4(0.0f, 0.0f, 0.0f, 0.0f), 0xFFFFFFFF);
	}
}







PsInput_P TriangleVS(VsInput_P input) 
{
	PsInput_P output = (PsInput_P)0;
    output.ScreenPos = input.Pos;
    return output;
}


float4 TrianglePS(PsInput_P input) : SV_TARGET 
{   
    return float4(1.0f, 1.0f, 1.0f, 1.0f);
}


technique11 Triangle
{
	pass oneandonly
	{
		SetVertexShader(CompileShader(vs_4_0, TriangleVS()));
		SetGeometryShader(0);
		SetPixelShader(CompileShader(ps_4_0, TrianglePS()));
	}
}